﻿using Dlls;
using Persistencia;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using UI.Views.Consultas;

namespace UI.Views.Cadastros
{
    /// <summary>
    /// Interaction logic for frmCadastrarOrcamento.xaml
    /// </summary>
    public partial class frmCadastrarOrcamento : Window
    {
        private PessoasDLL cliente;
        private Pessoa DadosCliente = new Pessoa();
        private OrdemServico OS;
        private Orcamento OR;

        private OrdemServicoItem Itens;
        private Context contexto;
        private int CodigoNovaOR;
        private Pessoa pessoa;
        private PessoasDLL pessoas;
        private GrupoPessoasDLL grupoDePessoas;
        private int codigoParaAlterarOuDeletar = 0;
        private int codGrupo;
        private Pessoa ClienteOrcamento;



        public frmCadastrarOrcamento()
        {
            InitializeComponent();
        }

        private void Novo(object sender, RoutedEventArgs e)
        {
            reset(0, this);
            OR = new Orcamento()
            {
                DataOrcamento = DateTime.Now,
                Status = cbxsituacao.SelectionBoxItem.ToString()
            };
            contexto = new Context();
            contexto.Orcamentos.InsertOnSubmit(OR);
            contexto.SubmitChanges();
            CodigoNovaOR = OR.Codigo;
            lblDataOrcamento.Content = OS.DataAbertura.ToString().Remove(10, 9);
            txtCodigoOrcamento.Text = CodigoNovaOR.ToString();

        }
        private static void reset(int depth, DependencyObject obj)
        {
            // Percorre todos os filhos do objeto visual.
            for (int i = 0; i < VisualTreeHelper.GetChildrenCount(obj); i++)
                reset(depth + 1, VisualTreeHelper.GetChild(obj, i));

            // Se for um TextBox, limpa.
            if (obj is TextBox)
                ((TextBox)obj).Text = string.Empty;
        }


        private void Delete(object sender, RoutedEventArgs e)
        {

        }

        private void InsertOrUpdate(object sender, RoutedEventArgs e)
        {

        }

        private void txtCodigoServicoProduto_PreviewKeyDown(object sender, KeyEventArgs e)
        {
            if (e.Key == Key.Enter)
            {
                if (txtCodigoServicoProduto.Text == "")
                {
                    frmConsultaPadrao frm = new frmConsultaPadrao("Produtos");
                    frm.Show();

                }
                else
                {

                    Produto prod = new Produto();
                    ProdutosDLL prodDll = new ProdutosDLL();
                    prod = prodDll.getProduto(int.Parse(txtCodigoServicoProduto.Text));
                    txtNomeServicoProduto.Text = prod.DescricaoProduto;

                }

                txtQtd.Focus();

            }


        }
        private void InserirItens(object sender, KeyEventArgs e)
        {

            if (e.Key == Key.Enter)
            {
                Itens = new OrdemServicoItem()
                {
                    CodOs = CodigoNovaOR,
                    CodProduto = int.Parse(txtCodigoServicoProduto.Text),
                    Quantidade = int.Parse(txtQtd.Text),
                    ValorUnitario = int.Parse(txtValorUnitario.Text)

                };
                try
                {
                    Itens.ValorTotal = Itens.ValorUnitario * Itens.Quantidade;
                }
                catch (Exception)
                {
                    MessageBox.Show("Foi inserido um caractere inválido");
                }

                dgwItensOS.Items.Add(Itens);
            }
        }

        private void txtQtd_PreviewKeyDown(object sender, KeyEventArgs e)
        {
            if (e.Key == Key.Enter)
            {
                txtValorUnitario.Focus();
            }


        }

        private void txtCodigoFuncionario_KeyDown(object sender, KeyEventArgs e)
        {

        }

        private void txtCodigoCliente_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.Key == Key.Enter)
            {
                if (txtCodigoCliente.Text != "")
                {
                    ClienteOrcamento = new Pessoa();
                    PessoasDLL ClienteDLL = new PessoasDLL();
                    ClienteOrcamento = ClienteDLL.getPessoa(int.Parse(txtCodigoCliente.Text));
                    lblNomeCliente.Content = ClienteOrcamento.Nome;
                }
                else
                {
                    frmConsultaPadrao frm = new frmConsultaPadrao("Pessoas");
                    frm.ShowDialog();
                    txtCodigoCliente.Text = global.ReturnPessoa.Codigo.ToString();
                    lblNomeCliente.Content = global.ReturnPessoa.Nome;
                }


            }


        }

    }
}